Face Generation

In this project, you'll use generative adversarial networks to generate new images of faces.

Get the Data

You'll be using two datasets in this project:

  • MNIST
  • CelebA

Since the celebA dataset is complex and you're doing GANs in a project for the first time, we want you to test your neural network on MNIST before CelebA. Running the GANs on MNIST will allow you to see how well your model trains sooner.

If you're using FloydHub, set data_dir to "/input" and use the FloydHub data ID "R5KrjnANiKVhLWAkpXhNBe".

In [1]:
!ls -al /input
total 8308
drwxr-xr-x   4 root root    6144 Apr 29 00:27 .
drwxr-xr-x 138 root root    4096 Aug 12 16:20 ..
drwxr-xr-x   2 root root 6137856 Apr 28 19:01 img_align_celeba
drwxr-xr-x   2 root root 2365440 Apr 28 18:57 mnist
In [2]:
data_dir = '/input'

# FloydHub - Use with data ID "R5KrjnANiKVhLWAkpXhNBe"
#data_dir = '/input'


"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
import helper

helper.download_extract('mnist', data_dir)
helper.download_extract('celeba', data_dir)
Found mnist Data
Found celeba Data

Explore the Data

MNIST

As you're aware, the MNIST dataset contains images of handwritten digits. You can view the first number of examples by changing show_n_images.

In [3]:
show_n_images = 25

"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
%matplotlib inline
import os
from glob import glob
from matplotlib import pyplot

mnist_images = helper.get_batch(glob(os.path.join(data_dir, 'mnist/*.jpg'))[:show_n_images], 28, 28, 'L')
pyplot.imshow(helper.images_square_grid(mnist_images, 'L'), cmap='gray')
Out[3]:
<matplotlib.image.AxesImage at 0x7f9f803b16d8>

CelebA

The CelebFaces Attributes Dataset (CelebA) dataset contains over 200,000 celebrity images with annotations. Since you're going to be generating faces, you won't need the annotations. You can view the first number of examples by changing show_n_images.

In [4]:
show_n_images = 25

"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
mnist_images = helper.get_batch(glob(os.path.join(data_dir, 'img_align_celeba/*.jpg'))[:show_n_images], 28, 28, 'RGB')
pyplot.imshow(helper.images_square_grid(mnist_images, 'RGB'))
Out[4]:
<matplotlib.image.AxesImage at 0x7f9f802b17b8>

Preprocess the Data

Since the project's main focus is on building the GANs, we'll preprocess the data for you. The values of the MNIST and CelebA dataset will be in the range of -0.5 to 0.5 of 28x28 dimensional images. The CelebA images will be cropped to remove parts of the image that don't include a face, then resized down to 28x28.

The MNIST images are black and white images with a single color channel while the CelebA images have 3 color channels (RGB color channel).

Build the Neural Network

You'll build the components necessary to build a GANs by implementing the following functions below:

  • model_inputs
  • discriminator
  • generator
  • model_loss
  • model_opt
  • train

Check the Version of TensorFlow and Access to GPU

This will check to make sure you have the correct version of TensorFlow and access to a GPU

In [5]:
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
from distutils.version import LooseVersion
import warnings
import tensorflow as tf

# Check TensorFlow Version
assert LooseVersion(tf.__version__) >= LooseVersion('1.0'), 'Please use TensorFlow version 1.0 or newer.  You are using {}'.format(tf.__version__)
print('TensorFlow Version: {}'.format(tf.__version__))

# Check for a GPU
if not tf.test.gpu_device_name():
    warnings.warn('No GPU found. Please use a GPU to train your neural network.')
else:
    print('Default GPU Device: {}'.format(tf.test.gpu_device_name()))
TensorFlow Version: 1.1.0
Default GPU Device: /gpu:0

Input

Implement the model_inputs function to create TF Placeholders for the Neural Network. It should create the following placeholders:

  • Real input images placeholder with rank 4 using image_width, image_height, and image_channels.
  • Z input placeholder with rank 2 using z_dim.
  • Learning rate placeholder with rank 0.

Return the placeholders in the following the tuple (tensor of real input images, tensor of z data)

In [6]:
import problem_unittests as tests

def model_inputs(image_width, image_height, image_channels, z_dim):
    """
    Create the model inputs
    :param image_width: The input image width
    :param image_height: The input image height
    :param image_channels: The number of image channels
    :param z_dim: The dimension of Z
    :return: Tuple of (tensor of real input images, tensor of z data, learning rate)
    """
    
    real_inputs = tf.placeholder(
        tf.float32, 
        (None, image_height, image_width, image_channels),
        name='real_inputs'
    )
    z_inputs = tf.placeholder(tf.float32, (None, z_dim), name='z_inputs')
    lrate = tf.placeholder(tf.float32, name='lrate')
    return real_inputs, z_inputs, lrate


"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_model_inputs(model_inputs)
Tests Passed

Discriminator

Implement discriminator to create a discriminator neural network that discriminates on images. This function should be able to reuse the variables in the neural network. Use tf.variable_scope with a scope name of "discriminator" to allow the variables to be reused. The function should return a tuple of (tensor output of the discriminator, tensor logits of the discriminator).

In [7]:
def discriminator(images, reuse=False, alpha=0.2, kernel=6, filters=32):
    """
    Create the discriminator network
    :param images: Tensor of input image(s)
    :param reuse: Boolean if the weights should be reused
    :return: Tuple of (tensor output of the discriminator, tensor logits of the discriminator)
    """
    # Input layer is 28x28x3
    with tf.variable_scope('discriminator', reuse=reuse):
        x1 = tf.layers.conv2d(images, filters, kernel, strides=2, padding='same')
        relu1 = tf.maximum(alpha * x1, x1)
        # 14x14x32
        
        x2 = tf.layers.conv2d(x1, filters*2, kernel, strides=2, padding='same')
        bn2 = tf.layers.batch_normalization(x2, training=True)
        relu2 = tf.maximum(alpha * bn2, bn2)
        # 7x7x64
        
        x3 = tf.layers.conv2d(x2, filters*2, kernel, strides=1, padding='same')
        bn3 = tf.layers.batch_normalization(x3, training=True)
        relu3 = tf.maximum(alpha * bn3, bn3)
        
        flat = tf.reshape(relu3, (-1, 7*7*filters*2))
        logits = tf.layers.dense(flat, 1)
        out = tf.sigmoid(logits)

    return out, logits


"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_discriminator(discriminator, tf)
Tests Passed

Generator

Implement generator to generate an image using z. This function should be able to reuse the variables in the neural network. Use tf.variable_scope with a scope name of "generator" to allow the variables to be reused. The function should return the generated 28 x 28 x out_channel_dim images.

In [8]:
def generator(z, out_channel_dim, is_train=True, alpha=0.2, kernel=6):
    """
    Create the generator network
    :param z: Input z
    :param out_channel_dim: The number of channels in the output image
    :param is_train: Boolean if generator is being used for training
    :return: The tensor output of the generator
    """
    with tf.variable_scope('generator', reuse=not is_train):
        x1 = tf.layers.dense(z, 7*7*512)
        
        x1 = tf.reshape(x1, (-1, 7, 7, 512))
        x1 = tf.layers.batch_normalization(x1, training=is_train)
        x1 = tf.maximum(alpha * x1, x1)
        # 7x7x512
        
        x2 = tf.layers.conv2d_transpose(x1, 256, kernel, strides=2, padding='same')
        x2 = tf.layers.batch_normalization(x2, training=is_train)
        x2 = tf.maximum(alpha * x2, x2)
        # 14x14x256
        
        x3 = tf.layers.conv2d_transpose(x2, 128, kernel, strides=1, padding='same')
        x3 = tf.layers.batch_normalization(x3, training=is_train)
        x3 = tf.maximum(alpha * x3, x3)
        # 14x14x128
        
        logits = tf.layers.conv2d_transpose(
            x3, out_channel_dim, kernel, strides=2, padding='same')
        # 28x28x3
        
        out = tf.tanh(logits)
    return out


"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_generator(generator, tf)
Tests Passed

Loss

Implement model_loss to build the GANs for training and calculate the loss. The function should return a tuple of (discriminator loss, generator loss). Use the following functions you implemented:

  • discriminator(images, reuse=False)
  • generator(z, out_channel_dim, is_train=True)
In [9]:
def model_loss(input_real, input_z, out_channel_dim):
    """
    Get the loss for the discriminator and generator
    :param input_real: Images from the real dataset
    :param input_z: Z input
    :param out_channel_dim: The number of channels in the output image
    :return: A tuple of (discriminator loss, generator loss)
    """
    gen_model = generator(input_z, out_channel_dim)
    d_model_real, d_logits_real = discriminator(input_real)
    d_model_fake, d_logits_fake = discriminator(gen_model, reuse=True)
    
    d_loss_real = tf.reduce_mean(
        tf.nn.sigmoid_cross_entropy_with_logits(
            logits=d_logits_real, labels=tf.ones_like(d_model_real)
        )
    )
    d_loss_fake = tf.reduce_mean(
        tf.nn.sigmoid_cross_entropy_with_logits(
            logits=d_logits_fake, labels=tf.zeros_like(d_model_fake)
        )
    )
    g_loss = tf.reduce_mean(
        tf.nn.sigmoid_cross_entropy_with_logits(
            logits=d_logits_fake, labels=tf.ones_like(d_model_fake)
        )
    )
    d_loss = d_loss_real + d_loss_fake
    
    return d_loss, g_loss


"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_model_loss(model_loss)
Tests Passed

Optimization

Implement model_opt to create the optimization operations for the GANs. Use tf.trainable_variables to get all the trainable variables. Filter the variables with names that are in the discriminator and generator scope names. The function should return a tuple of (discriminator training operation, generator training operation).

In [10]:
def model_opt(d_loss, g_loss, learning_rate, beta1):
    """
    Get optimization operations
    :param d_loss: Discriminator loss Tensor
    :param g_loss: Generator loss Tensor
    :param learning_rate: Learning Rate Placeholder
    :param beta1: The exponential decay rate for the 1st moment in the optimizer
    :return: A tuple of (discriminator training operation, generator training operation)
    """
    # Get weights and bias to update
    t_vars = tf.trainable_variables()
    d_vars = [var for var in t_vars if var.name.startswith('discriminator')]
    g_vars = [var for var in t_vars if var.name.startswith('generator')]

    # Optimize
    with tf.control_dependencies(tf.get_collection(tf.GraphKeys.UPDATE_OPS)):
        d_train_opt = tf.train.AdamOptimizer(learning_rate, beta1=beta1).minimize(d_loss, var_list=d_vars)
        g_train_opt = tf.train.AdamOptimizer(learning_rate, beta1=beta1).minimize(g_loss, var_list=g_vars)

    return d_train_opt, g_train_opt


"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
tests.test_model_opt(model_opt, tf)
Tests Passed

Neural Network Training

Show Output

Use this function to show the current output of the generator during training. It will help you determine how well the GANs is training.

In [11]:
"""
DON'T MODIFY ANYTHING IN THIS CELL
"""
import numpy as np

def show_generator_output(sess, n_images, input_z, out_channel_dim, image_mode):
    """
    Show example output for the generator
    :param sess: TensorFlow session
    :param n_images: Number of Images to display
    :param input_z: Input Z Tensor
    :param out_channel_dim: The number of channels in the output image
    :param image_mode: The mode to use for images ("RGB" or "L")
    """
    cmap = None if image_mode == 'RGB' else 'gray'
    z_dim = input_z.get_shape().as_list()[-1]
    example_z = np.random.uniform(-1, 1, size=[n_images, z_dim])

    samples = sess.run(
        generator(input_z, out_channel_dim, False),
        feed_dict={input_z: example_z})

    images_grid = helper.images_square_grid(samples, image_mode)
    pyplot.imshow(images_grid, cmap=cmap)
    pyplot.show()

Train

Implement train to build and train the GANs. Use the following functions you implemented:

  • model_inputs(image_width, image_height, image_channels, z_dim)
  • model_loss(input_real, input_z, out_channel_dim)
  • model_opt(d_loss, g_loss, learning_rate, beta1)

Use the show_generator_output to show generator output while you train. Running show_generator_output for every batch will drastically increase training time and increase the size of the notebook. It's recommended to print the generator output every 100 batches.

In [12]:
def train(epoch_count, batch_size, z_dim, learning_rate, beta1, get_batches, data_shape, data_image_mode):
    """
    Train the GAN
    :param epoch_count: Number of epochs
    :param batch_size: Batch Size
    :param z_dim: Z dimension
    :param learning_rate: Learning Rate
    :param beta1: The exponential decay rate for the 1st moment in the optimizer
    :param get_batches: Function to get batches
    :param data_shape: Shape of the data
    :param data_image_mode: The image mode to use for images ("RGB" or "L")
    """
    steps=0
    
    # TODO: Build Model
    image_channels = 3 if data_image_mode == 'RGB' else 1
    image_height, image_width = data_shape[1], data_shape[2]
    real_inputs, z_inputs, lrate = model_inputs(
        image_width, image_height, image_channels, z_dim)
        
    d_loss, g_loss = model_loss(real_inputs, z_inputs, image_channels)
    
    d_opt, g_opt = model_opt(d_loss, g_loss, lrate, beta1)
        
    with tf.Session() as sess:
        sess.run(tf.global_variables_initializer())
        for epoch_i in range(epoch_count):
            for batch_images in get_batches(batch_size):
                
                steps += 1
                batch_images = 2 * batch_images
                
                batch_z = np.random.uniform(-1 ,1, size=(batch_size, z_dim))
                
                _ = sess.run(d_opt, feed_dict={
                    real_inputs: batch_images,
                    z_inputs: batch_z,
                    lrate: learning_rate
                })
                
                # Double the number of trains to generator
                _ = sess.run(g_opt, feed_dict={
                    z_inputs: batch_z,
                    real_inputs: batch_images,
                    lrate: learning_rate
                })
                
                
                if steps % 10 == 0:
                    # At the end of every 10 epochs, get the losses and print them out
                    train_loss_d = d_loss.eval({z_inputs: batch_z, real_inputs: batch_images})
                    train_loss_g = g_loss.eval({z_inputs: batch_z})

                    print("Epoch {}/{}...".format(epoch_i+1, epochs),
                          "Discriminator Loss: {:.4f}...".format(train_loss_d),
                          "Generator Loss: {:.4f}".format(train_loss_g),
                          "Sum Loss: {:.4f}".format(train_loss_g+train_loss_d))
                
                if steps % 100 == 0:
                    show_generator_output(
                        sess,
                        25,
                        z_inputs,
                        image_channels,
                        data_image_mode
                    )
                  
        show_generator_output(sess, 25, z_inputs, image_channels, data_image_mode)

                
                

MNIST

Test your GANs architecture on MNIST. After 2 epochs, the GANs should be able to generate images that look like handwritten digits. Make sure the loss of the generator is lower than the loss of the discriminator or close to 0.

In [14]:
batch_size = 64
z_dim = 100
learning_rate = 0.0002
beta1 = 0.5


"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
epochs = 2

mnist_dataset = helper.Dataset('mnist', glob(os.path.join(data_dir, 'mnist/*.jpg')))
with tf.Graph().as_default():
    train(epochs, batch_size, z_dim, learning_rate, beta1, mnist_dataset.get_batches,
          mnist_dataset.shape, mnist_dataset.image_mode)
Epoch 1/2... Discriminator Loss: 2.5938... Generator Loss: 0.1088 Sum Loss: 2.7027
Epoch 1/2... Discriminator Loss: 1.1942... Generator Loss: 0.5301 Sum Loss: 1.7243
Epoch 1/2... Discriminator Loss: 0.4651... Generator Loss: 1.2154 Sum Loss: 1.6805
Epoch 1/2... Discriminator Loss: 0.6658... Generator Loss: 0.8225 Sum Loss: 1.4883
Epoch 1/2... Discriminator Loss: 0.5269... Generator Loss: 1.0978 Sum Loss: 1.6247
Epoch 1/2... Discriminator Loss: 0.7713... Generator Loss: 1.0633 Sum Loss: 1.8346
Epoch 1/2... Discriminator Loss: 1.0023... Generator Loss: 0.8794 Sum Loss: 1.8817
Epoch 1/2... Discriminator Loss: 1.4124... Generator Loss: 1.6322 Sum Loss: 3.0445
Epoch 1/2... Discriminator Loss: 1.2613... Generator Loss: 0.9206 Sum Loss: 2.1819
Epoch 1/2... Discriminator Loss: 1.0628... Generator Loss: 0.9618 Sum Loss: 2.0246
Epoch 1/2... Discriminator Loss: 1.4847... Generator Loss: 0.8719 Sum Loss: 2.3566
Epoch 1/2... Discriminator Loss: 1.1975... Generator Loss: 0.8692 Sum Loss: 2.0667
Epoch 1/2... Discriminator Loss: 1.5980... Generator Loss: 0.6263 Sum Loss: 2.2243
Epoch 1/2... Discriminator Loss: 1.4674... Generator Loss: 0.6678 Sum Loss: 2.1352
Epoch 1/2... Discriminator Loss: 1.4479... Generator Loss: 0.6946 Sum Loss: 2.1425
Epoch 1/2... Discriminator Loss: 1.4341... Generator Loss: 0.6696 Sum Loss: 2.1037
Epoch 1/2... Discriminator Loss: 1.3047... Generator Loss: 0.6928 Sum Loss: 1.9975
Epoch 1/2... Discriminator Loss: 1.6346... Generator Loss: 0.5838 Sum Loss: 2.2184
Epoch 1/2... Discriminator Loss: 1.5758... Generator Loss: 0.5641 Sum Loss: 2.1399
Epoch 1/2... Discriminator Loss: 1.7201... Generator Loss: 0.5322 Sum Loss: 2.2523
Epoch 1/2... Discriminator Loss: 1.6042... Generator Loss: 0.5765 Sum Loss: 2.1807
Epoch 1/2... Discriminator Loss: 1.7658... Generator Loss: 0.5337 Sum Loss: 2.2995
Epoch 1/2... Discriminator Loss: 1.6959... Generator Loss: 0.5580 Sum Loss: 2.2539
Epoch 1/2... Discriminator Loss: 1.5836... Generator Loss: 0.5932 Sum Loss: 2.1768
Epoch 1/2... Discriminator Loss: 1.7197... Generator Loss: 0.5139 Sum Loss: 2.2337
Epoch 1/2... Discriminator Loss: 1.6299... Generator Loss: 0.5873 Sum Loss: 2.2172
Epoch 1/2... Discriminator Loss: 1.5976... Generator Loss: 0.5828 Sum Loss: 2.1804
Epoch 1/2... Discriminator Loss: 1.5432... Generator Loss: 0.5808 Sum Loss: 2.1240
Epoch 1/2... Discriminator Loss: 1.6272... Generator Loss: 0.5887 Sum Loss: 2.2159
Epoch 1/2... Discriminator Loss: 1.5657... Generator Loss: 0.5946 Sum Loss: 2.1603
Epoch 1/2... Discriminator Loss: 1.4809... Generator Loss: 0.6578 Sum Loss: 2.1387
Epoch 1/2... Discriminator Loss: 1.5112... Generator Loss: 0.6472 Sum Loss: 2.1584
Epoch 1/2... Discriminator Loss: 1.5584... Generator Loss: 0.5805 Sum Loss: 2.1389
Epoch 1/2... Discriminator Loss: 1.4749... Generator Loss: 0.6535 Sum Loss: 2.1284
Epoch 1/2... Discriminator Loss: 1.5165... Generator Loss: 0.6228 Sum Loss: 2.1392
Epoch 1/2... Discriminator Loss: 1.5848... Generator Loss: 0.5863 Sum Loss: 2.1711
Epoch 1/2... Discriminator Loss: 1.5069... Generator Loss: 0.6272 Sum Loss: 2.1341
Epoch 1/2... Discriminator Loss: 1.5557... Generator Loss: 0.6061 Sum Loss: 2.1618
Epoch 1/2... Discriminator Loss: 1.4543... Generator Loss: 0.6531 Sum Loss: 2.1074
Epoch 1/2... Discriminator Loss: 1.5236... Generator Loss: 0.6132 Sum Loss: 2.1369
Epoch 1/2... Discriminator Loss: 1.4109... Generator Loss: 0.6688 Sum Loss: 2.0798
Epoch 1/2... Discriminator Loss: 1.4622... Generator Loss: 0.6711 Sum Loss: 2.1333
Epoch 1/2... Discriminator Loss: 1.4665... Generator Loss: 0.6312 Sum Loss: 2.0976
Epoch 1/2... Discriminator Loss: 1.5452... Generator Loss: 0.5935 Sum Loss: 2.1386
Epoch 1/2... Discriminator Loss: 1.4290... Generator Loss: 0.6735 Sum Loss: 2.1026
Epoch 1/2... Discriminator Loss: 1.4273... Generator Loss: 0.6910 Sum Loss: 2.1183
Epoch 1/2... Discriminator Loss: 1.4370... Generator Loss: 0.6461 Sum Loss: 2.0831
Epoch 1/2... Discriminator Loss: 1.4546... Generator Loss: 0.6749 Sum Loss: 2.1296
Epoch 1/2... Discriminator Loss: 1.4918... Generator Loss: 0.6237 Sum Loss: 2.1155
Epoch 1/2... Discriminator Loss: 1.4501... Generator Loss: 0.6673 Sum Loss: 2.1174
Epoch 1/2... Discriminator Loss: 1.3894... Generator Loss: 0.6952 Sum Loss: 2.0846
Epoch 1/2... Discriminator Loss: 1.4638... Generator Loss: 0.6398 Sum Loss: 2.1036
Epoch 1/2... Discriminator Loss: 1.4271... Generator Loss: 0.6487 Sum Loss: 2.0758
Epoch 1/2... Discriminator Loss: 1.4453... Generator Loss: 0.6758 Sum Loss: 2.1211
Epoch 1/2... Discriminator Loss: 1.4090... Generator Loss: 0.6907 Sum Loss: 2.0997
Epoch 1/2... Discriminator Loss: 1.4033... Generator Loss: 0.6740 Sum Loss: 2.0772
Epoch 1/2... Discriminator Loss: 1.3996... Generator Loss: 0.6852 Sum Loss: 2.0847
Epoch 1/2... Discriminator Loss: 1.4379... Generator Loss: 0.6851 Sum Loss: 2.1229
Epoch 1/2... Discriminator Loss: 1.4368... Generator Loss: 0.6720 Sum Loss: 2.1088
Epoch 1/2... Discriminator Loss: 1.4589... Generator Loss: 0.6381 Sum Loss: 2.0970
Epoch 1/2... Discriminator Loss: 1.4008... Generator Loss: 0.6809 Sum Loss: 2.0817
Epoch 1/2... Discriminator Loss: 1.4249... Generator Loss: 0.6657 Sum Loss: 2.0906
Epoch 1/2... Discriminator Loss: 1.4263... Generator Loss: 0.6577 Sum Loss: 2.0840
Epoch 1/2... Discriminator Loss: 1.3541... Generator Loss: 0.7211 Sum Loss: 2.0752
Epoch 1/2... Discriminator Loss: 1.4671... Generator Loss: 0.6760 Sum Loss: 2.1431
Epoch 1/2... Discriminator Loss: 1.4199... Generator Loss: 0.6829 Sum Loss: 2.1028
Epoch 1/2... Discriminator Loss: 1.3634... Generator Loss: 0.7064 Sum Loss: 2.0698
Epoch 1/2... Discriminator Loss: 1.3831... Generator Loss: 0.7412 Sum Loss: 2.1243
Epoch 1/2... Discriminator Loss: 1.4243... Generator Loss: 0.6772 Sum Loss: 2.1015
Epoch 1/2... Discriminator Loss: 1.4238... Generator Loss: 0.6585 Sum Loss: 2.0823
Epoch 1/2... Discriminator Loss: 1.3701... Generator Loss: 0.6876 Sum Loss: 2.0578
Epoch 1/2... Discriminator Loss: 1.3700... Generator Loss: 0.7136 Sum Loss: 2.0836
Epoch 1/2... Discriminator Loss: 1.3176... Generator Loss: 0.7535 Sum Loss: 2.0710
Epoch 1/2... Discriminator Loss: 1.4003... Generator Loss: 0.6637 Sum Loss: 2.0639
Epoch 1/2... Discriminator Loss: 1.3800... Generator Loss: 0.6923 Sum Loss: 2.0722
Epoch 1/2... Discriminator Loss: 1.4457... Generator Loss: 0.6466 Sum Loss: 2.0923
Epoch 1/2... Discriminator Loss: 1.3981... Generator Loss: 0.7023 Sum Loss: 2.1004
Epoch 1/2... Discriminator Loss: 1.4088... Generator Loss: 0.6992 Sum Loss: 2.1080
Epoch 1/2... Discriminator Loss: 1.4021... Generator Loss: 0.6843 Sum Loss: 2.0864
Epoch 1/2... Discriminator Loss: 1.3601... Generator Loss: 0.6920 Sum Loss: 2.0521
Epoch 1/2... Discriminator Loss: 1.3601... Generator Loss: 0.7295 Sum Loss: 2.0896
Epoch 1/2... Discriminator Loss: 1.3762... Generator Loss: 0.7113 Sum Loss: 2.0875
Epoch 1/2... Discriminator Loss: 1.4104... Generator Loss: 0.6620 Sum Loss: 2.0724
Epoch 1/2... Discriminator Loss: 1.3841... Generator Loss: 0.6993 Sum Loss: 2.0834
Epoch 1/2... Discriminator Loss: 1.3638... Generator Loss: 0.6898 Sum Loss: 2.0537
Epoch 1/2... Discriminator Loss: 1.4204... Generator Loss: 0.7057 Sum Loss: 2.1261
Epoch 1/2... Discriminator Loss: 1.3659... Generator Loss: 0.7023 Sum Loss: 2.0682
Epoch 1/2... Discriminator Loss: 1.4577... Generator Loss: 0.6592 Sum Loss: 2.1168
Epoch 1/2... Discriminator Loss: 1.3757... Generator Loss: 0.6478 Sum Loss: 2.0234
Epoch 1/2... Discriminator Loss: 1.3912... Generator Loss: 0.7032 Sum Loss: 2.0945
Epoch 1/2... Discriminator Loss: 1.4251... Generator Loss: 0.6574 Sum Loss: 2.0826
Epoch 1/2... Discriminator Loss: 1.3465... Generator Loss: 0.6708 Sum Loss: 2.0173
Epoch 1/2... Discriminator Loss: 1.3921... Generator Loss: 0.6493 Sum Loss: 2.0414
Epoch 2/2... Discriminator Loss: 1.3494... Generator Loss: 0.7521 Sum Loss: 2.1015
Epoch 2/2... Discriminator Loss: 1.3725... Generator Loss: 0.7329 Sum Loss: 2.1054
Epoch 2/2... Discriminator Loss: 1.3572... Generator Loss: 0.6958 Sum Loss: 2.0530
Epoch 2/2... Discriminator Loss: 1.3993... Generator Loss: 0.7664 Sum Loss: 2.1657
Epoch 2/2... Discriminator Loss: 1.3298... Generator Loss: 0.7911 Sum Loss: 2.1209
Epoch 2/2... Discriminator Loss: 1.4250... Generator Loss: 0.6441 Sum Loss: 2.0691
Epoch 2/2... Discriminator Loss: 1.3527... Generator Loss: 0.6977 Sum Loss: 2.0503
Epoch 2/2... Discriminator Loss: 1.3851... Generator Loss: 0.7019 Sum Loss: 2.0870
Epoch 2/2... Discriminator Loss: 1.3693... Generator Loss: 0.7016 Sum Loss: 2.0709
Epoch 2/2... Discriminator Loss: 1.3601... Generator Loss: 0.8134 Sum Loss: 2.1734
Epoch 2/2... Discriminator Loss: 1.3675... Generator Loss: 0.6860 Sum Loss: 2.0535
Epoch 2/2... Discriminator Loss: 1.3876... Generator Loss: 0.7360 Sum Loss: 2.1236
Epoch 2/2... Discriminator Loss: 1.4077... Generator Loss: 0.6422 Sum Loss: 2.0499
Epoch 2/2... Discriminator Loss: 1.3715... Generator Loss: 0.6141 Sum Loss: 1.9855
Epoch 2/2... Discriminator Loss: 1.3706... Generator Loss: 0.6120 Sum Loss: 1.9826
Epoch 2/2... Discriminator Loss: 1.3852... Generator Loss: 0.6377 Sum Loss: 2.0228
Epoch 2/2... Discriminator Loss: 1.3923... Generator Loss: 0.7237 Sum Loss: 2.1161
Epoch 2/2... Discriminator Loss: 1.3352... Generator Loss: 0.6624 Sum Loss: 1.9975
Epoch 2/2... Discriminator Loss: 1.3555... Generator Loss: 0.6609 Sum Loss: 2.0163
Epoch 2/2... Discriminator Loss: 1.3974... Generator Loss: 0.7374 Sum Loss: 2.1349
Epoch 2/2... Discriminator Loss: 1.3808... Generator Loss: 0.6743 Sum Loss: 2.0551
Epoch 2/2... Discriminator Loss: 1.3971... Generator Loss: 0.7644 Sum Loss: 2.1615
Epoch 2/2... Discriminator Loss: 1.3318... Generator Loss: 0.6628 Sum Loss: 1.9946
Epoch 2/2... Discriminator Loss: 1.3913... Generator Loss: 0.8311 Sum Loss: 2.2224
Epoch 2/2... Discriminator Loss: 1.3790... Generator Loss: 0.7721 Sum Loss: 2.1511
Epoch 2/2... Discriminator Loss: 1.3989... Generator Loss: 0.5637 Sum Loss: 1.9626
Epoch 2/2... Discriminator Loss: 1.4282... Generator Loss: 0.5524 Sum Loss: 1.9806
Epoch 2/2... Discriminator Loss: 1.3558... Generator Loss: 0.6289 Sum Loss: 1.9847
Epoch 2/2... Discriminator Loss: 1.3216... Generator Loss: 0.7480 Sum Loss: 2.0696
Epoch 2/2... Discriminator Loss: 1.4380... Generator Loss: 0.7465 Sum Loss: 2.1845
Epoch 2/2... Discriminator Loss: 1.3510... Generator Loss: 0.6323 Sum Loss: 1.9833
Epoch 2/2... Discriminator Loss: 1.3724... Generator Loss: 0.6654 Sum Loss: 2.0377
Epoch 2/2... Discriminator Loss: 1.4248... Generator Loss: 0.5906 Sum Loss: 2.0154
Epoch 2/2... Discriminator Loss: 1.4122... Generator Loss: 0.6514 Sum Loss: 2.0636
Epoch 2/2... Discriminator Loss: 1.3738... Generator Loss: 0.7372 Sum Loss: 2.1111
Epoch 2/2... Discriminator Loss: 1.3981... Generator Loss: 0.6934 Sum Loss: 2.0915
Epoch 2/2... Discriminator Loss: 1.3695... Generator Loss: 0.6001 Sum Loss: 1.9696
Epoch 2/2... Discriminator Loss: 1.3691... Generator Loss: 0.7956 Sum Loss: 2.1648
Epoch 2/2... Discriminator Loss: 1.3849... Generator Loss: 0.6857 Sum Loss: 2.0706
Epoch 2/2... Discriminator Loss: 1.4064... Generator Loss: 0.6366 Sum Loss: 2.0430
Epoch 2/2... Discriminator Loss: 1.3938... Generator Loss: 0.7029 Sum Loss: 2.0967
Epoch 2/2... Discriminator Loss: 1.3818... Generator Loss: 0.7646 Sum Loss: 2.1463
Epoch 2/2... Discriminator Loss: 1.4018... Generator Loss: 0.5769 Sum Loss: 1.9787
Epoch 2/2... Discriminator Loss: 1.4347... Generator Loss: 0.6124 Sum Loss: 2.0471
Epoch 2/2... Discriminator Loss: 1.4120... Generator Loss: 0.6853 Sum Loss: 2.0973
Epoch 2/2... Discriminator Loss: 1.3462... Generator Loss: 0.7762 Sum Loss: 2.1224
Epoch 2/2... Discriminator Loss: 1.3461... Generator Loss: 0.7455 Sum Loss: 2.0916
Epoch 2/2... Discriminator Loss: 1.3723... Generator Loss: 0.7853 Sum Loss: 2.1576
Epoch 2/2... Discriminator Loss: 1.3658... Generator Loss: 0.6836 Sum Loss: 2.0494
Epoch 2/2... Discriminator Loss: 1.3538... Generator Loss: 0.8219 Sum Loss: 2.1758
Epoch 2/2... Discriminator Loss: 1.4479... Generator Loss: 0.6102 Sum Loss: 2.0582
Epoch 2/2... Discriminator Loss: 1.4697... Generator Loss: 0.6614 Sum Loss: 2.1311
Epoch 2/2... Discriminator Loss: 1.4294... Generator Loss: 0.6441 Sum Loss: 2.0736
Epoch 2/2... Discriminator Loss: 1.3341... Generator Loss: 0.8158 Sum Loss: 2.1499
Epoch 2/2... Discriminator Loss: 1.4282... Generator Loss: 0.6923 Sum Loss: 2.1205
Epoch 2/2... Discriminator Loss: 1.3997... Generator Loss: 0.6574 Sum Loss: 2.0570
Epoch 2/2... Discriminator Loss: 1.4815... Generator Loss: 0.5535 Sum Loss: 2.0350
Epoch 2/2... Discriminator Loss: 1.3940... Generator Loss: 0.6718 Sum Loss: 2.0658
Epoch 2/2... Discriminator Loss: 1.3519... Generator Loss: 0.6468 Sum Loss: 1.9987
Epoch 2/2... Discriminator Loss: 1.3901... Generator Loss: 0.7535 Sum Loss: 2.1436
Epoch 2/2... Discriminator Loss: 1.3282... Generator Loss: 0.7784 Sum Loss: 2.1066
Epoch 2/2... Discriminator Loss: 1.3330... Generator Loss: 0.6620 Sum Loss: 1.9950
Epoch 2/2... Discriminator Loss: 1.3560... Generator Loss: 0.7877 Sum Loss: 2.1436
Epoch 2/2... Discriminator Loss: 1.3571... Generator Loss: 0.6785 Sum Loss: 2.0356
Epoch 2/2... Discriminator Loss: 1.3588... Generator Loss: 0.6780 Sum Loss: 2.0368
Epoch 2/2... Discriminator Loss: 1.3741... Generator Loss: 0.6517 Sum Loss: 2.0258
Epoch 2/2... Discriminator Loss: 1.3843... Generator Loss: 0.6424 Sum Loss: 2.0267
Epoch 2/2... Discriminator Loss: 1.3501... Generator Loss: 0.7050 Sum Loss: 2.0550
Epoch 2/2... Discriminator Loss: 1.3565... Generator Loss: 0.6376 Sum Loss: 1.9941
Epoch 2/2... Discriminator Loss: 1.3512... Generator Loss: 0.6885 Sum Loss: 2.0397
Epoch 2/2... Discriminator Loss: 1.4896... Generator Loss: 0.6275 Sum Loss: 2.1172
Epoch 2/2... Discriminator Loss: 1.4036... Generator Loss: 0.6222 Sum Loss: 2.0257
Epoch 2/2... Discriminator Loss: 1.3096... Generator Loss: 0.7506 Sum Loss: 2.0602
Epoch 2/2... Discriminator Loss: 1.3228... Generator Loss: 0.7475 Sum Loss: 2.0703
Epoch 2/2... Discriminator Loss: 1.3685... Generator Loss: 0.6560 Sum Loss: 2.0245
Epoch 2/2... Discriminator Loss: 1.3837... Generator Loss: 0.6405 Sum Loss: 2.0242
Epoch 2/2... Discriminator Loss: 1.2890... Generator Loss: 0.7363 Sum Loss: 2.0253
Epoch 2/2... Discriminator Loss: 1.4286... Generator Loss: 0.7696 Sum Loss: 2.1982
Epoch 2/2... Discriminator Loss: 1.3456... Generator Loss: 0.7186 Sum Loss: 2.0642
Epoch 2/2... Discriminator Loss: 1.3507... Generator Loss: 0.7038 Sum Loss: 2.0545
Epoch 2/2... Discriminator Loss: 1.3993... Generator Loss: 0.6440 Sum Loss: 2.0434
Epoch 2/2... Discriminator Loss: 1.4046... Generator Loss: 0.6999 Sum Loss: 2.1045
Epoch 2/2... Discriminator Loss: 1.3060... Generator Loss: 0.8019 Sum Loss: 2.1079
Epoch 2/2... Discriminator Loss: 1.3364... Generator Loss: 0.6849 Sum Loss: 2.0213
Epoch 2/2... Discriminator Loss: 1.4393... Generator Loss: 0.7112 Sum Loss: 2.1505
Epoch 2/2... Discriminator Loss: 1.4667... Generator Loss: 0.6958 Sum Loss: 2.1625
Epoch 2/2... Discriminator Loss: 1.3582... Generator Loss: 0.7980 Sum Loss: 2.1562
Epoch 2/2... Discriminator Loss: 1.3661... Generator Loss: 0.6931 Sum Loss: 2.0593
Epoch 2/2... Discriminator Loss: 1.3638... Generator Loss: 0.6664 Sum Loss: 2.0302
Epoch 2/2... Discriminator Loss: 1.3237... Generator Loss: 0.7380 Sum Loss: 2.0617
Epoch 2/2... Discriminator Loss: 1.3888... Generator Loss: 0.6906 Sum Loss: 2.0794
Epoch 2/2... Discriminator Loss: 1.4198... Generator Loss: 0.6896 Sum Loss: 2.1094
Epoch 2/2... Discriminator Loss: 1.2982... Generator Loss: 0.7828 Sum Loss: 2.0811
Epoch 2/2... Discriminator Loss: 1.3630... Generator Loss: 0.6692 Sum Loss: 2.0322

CelebA

Run your GANs on CelebA. It will take around 20 minutes on the average GPU to run one epoch. You can run the whole epoch or stop when it starts to generate realistic faces.

In [13]:
batch_size = 64
z_dim = 100
learning_rate = 0.0002
beta1 = 0.5


"""
DON'T MODIFY ANYTHING IN THIS CELL THAT IS BELOW THIS LINE
"""
epochs = 1

celeba_dataset = helper.Dataset('celeba', glob(os.path.join(data_dir, 'img_align_celeba/*.jpg')))
with tf.Graph().as_default():
    train(epochs, batch_size, z_dim, learning_rate, beta1, celeba_dataset.get_batches,
          celeba_dataset.shape, celeba_dataset.image_mode)
Epoch 1/1... Discriminator Loss: 4.9612... Generator Loss: 0.0097 Sum Loss: 4.9708
Epoch 1/1... Discriminator Loss: 4.5380... Generator Loss: 0.0148 Sum Loss: 4.5528
Epoch 1/1... Discriminator Loss: 4.8703... Generator Loss: 0.0119 Sum Loss: 4.8822
Epoch 1/1... Discriminator Loss: 3.9639... Generator Loss: 0.0305 Sum Loss: 3.9944
Epoch 1/1... Discriminator Loss: 2.1844... Generator Loss: 0.2215 Sum Loss: 2.4059
Epoch 1/1... Discriminator Loss: 2.2286... Generator Loss: 0.2063 Sum Loss: 2.4350
Epoch 1/1... Discriminator Loss: 1.8136... Generator Loss: 0.4872 Sum Loss: 2.3008
Epoch 1/1... Discriminator Loss: 1.3495... Generator Loss: 0.7122 Sum Loss: 2.0618
Epoch 1/1... Discriminator Loss: 2.1259... Generator Loss: 0.3693 Sum Loss: 2.4952
Epoch 1/1... Discriminator Loss: 2.0321... Generator Loss: 0.4982 Sum Loss: 2.5303
Epoch 1/1... Discriminator Loss: 1.9852... Generator Loss: 0.4939 Sum Loss: 2.4791
Epoch 1/1... Discriminator Loss: 1.7269... Generator Loss: 0.6146 Sum Loss: 2.3414
Epoch 1/1... Discriminator Loss: 1.7325... Generator Loss: 0.6137 Sum Loss: 2.3462
Epoch 1/1... Discriminator Loss: 2.0588... Generator Loss: 0.4126 Sum Loss: 2.4714
Epoch 1/1... Discriminator Loss: 1.6441... Generator Loss: 0.6375 Sum Loss: 2.2817
Epoch 1/1... Discriminator Loss: 1.8555... Generator Loss: 0.5605 Sum Loss: 2.4160
Epoch 1/1... Discriminator Loss: 1.9119... Generator Loss: 0.4662 Sum Loss: 2.3781
Epoch 1/1... Discriminator Loss: 1.7964... Generator Loss: 0.5483 Sum Loss: 2.3447
Epoch 1/1... Discriminator Loss: 1.7756... Generator Loss: 0.5591 Sum Loss: 2.3347
Epoch 1/1... Discriminator Loss: 1.8309... Generator Loss: 0.5285 Sum Loss: 2.3594
Epoch 1/1... Discriminator Loss: 1.7411... Generator Loss: 0.5489 Sum Loss: 2.2899
Epoch 1/1... Discriminator Loss: 1.7775... Generator Loss: 0.5110 Sum Loss: 2.2885
Epoch 1/1... Discriminator Loss: 1.7942... Generator Loss: 0.5425 Sum Loss: 2.3368
Epoch 1/1... Discriminator Loss: 1.9886... Generator Loss: 0.3935 Sum Loss: 2.3821
Epoch 1/1... Discriminator Loss: 1.7304... Generator Loss: 0.5752 Sum Loss: 2.3055
Epoch 1/1... Discriminator Loss: 1.7667... Generator Loss: 0.5132 Sum Loss: 2.2799
Epoch 1/1... Discriminator Loss: 1.6931... Generator Loss: 0.5715 Sum Loss: 2.2645
Epoch 1/1... Discriminator Loss: 1.9063... Generator Loss: 0.4789 Sum Loss: 2.3852
Epoch 1/1... Discriminator Loss: 1.7685... Generator Loss: 0.4874 Sum Loss: 2.2559
Epoch 1/1... Discriminator Loss: 1.6601... Generator Loss: 0.5072 Sum Loss: 2.1672
Epoch 1/1... Discriminator Loss: 1.6881... Generator Loss: 0.5565 Sum Loss: 2.2445
Epoch 1/1... Discriminator Loss: 1.4606... Generator Loss: 0.6628 Sum Loss: 2.1234
Epoch 1/1... Discriminator Loss: 1.5916... Generator Loss: 0.6317 Sum Loss: 2.2234
Epoch 1/1... Discriminator Loss: 1.7030... Generator Loss: 0.5589 Sum Loss: 2.2619
Epoch 1/1... Discriminator Loss: 1.7182... Generator Loss: 0.5862 Sum Loss: 2.3045
Epoch 1/1... Discriminator Loss: 1.7307... Generator Loss: 0.5734 Sum Loss: 2.3042
Epoch 1/1... Discriminator Loss: 1.6395... Generator Loss: 0.5224 Sum Loss: 2.1619
Epoch 1/1... Discriminator Loss: 1.6766... Generator Loss: 0.5009 Sum Loss: 2.1775
Epoch 1/1... Discriminator Loss: 1.6358... Generator Loss: 0.5976 Sum Loss: 2.2333
Epoch 1/1... Discriminator Loss: 1.6331... Generator Loss: 0.5978 Sum Loss: 2.2309
Epoch 1/1... Discriminator Loss: 1.5403... Generator Loss: 0.6424 Sum Loss: 2.1828
Epoch 1/1... Discriminator Loss: 1.5302... Generator Loss: 0.6606 Sum Loss: 2.1908
Epoch 1/1... Discriminator Loss: 1.6649... Generator Loss: 0.5489 Sum Loss: 2.2138
Epoch 1/1... Discriminator Loss: 1.6894... Generator Loss: 0.6210 Sum Loss: 2.3104
Epoch 1/1... Discriminator Loss: 1.6891... Generator Loss: 0.5104 Sum Loss: 2.1995
Epoch 1/1... Discriminator Loss: 1.6484... Generator Loss: 0.5573 Sum Loss: 2.2057
Epoch 1/1... Discriminator Loss: 1.5970... Generator Loss: 0.5721 Sum Loss: 2.1690
Epoch 1/1... Discriminator Loss: 1.6553... Generator Loss: 0.5650 Sum Loss: 2.2203
Epoch 1/1... Discriminator Loss: 1.6135... Generator Loss: 0.6562 Sum Loss: 2.2697
Epoch 1/1... Discriminator Loss: 1.5735... Generator Loss: 0.5739 Sum Loss: 2.1474
Epoch 1/1... Discriminator Loss: 1.4776... Generator Loss: 0.6806 Sum Loss: 2.1582
Epoch 1/1... Discriminator Loss: 1.5606... Generator Loss: 0.6171 Sum Loss: 2.1777
Epoch 1/1... Discriminator Loss: 1.3631... Generator Loss: 0.8000 Sum Loss: 2.1631
Epoch 1/1... Discriminator Loss: 1.3921... Generator Loss: 0.7380 Sum Loss: 2.1302
Epoch 1/1... Discriminator Loss: 1.3595... Generator Loss: 0.7933 Sum Loss: 2.1527
Epoch 1/1... Discriminator Loss: 1.2686... Generator Loss: 0.9967 Sum Loss: 2.2653
Epoch 1/1... Discriminator Loss: 1.6367... Generator Loss: 0.6104 Sum Loss: 2.2471
Epoch 1/1... Discriminator Loss: 1.3312... Generator Loss: 0.8151 Sum Loss: 2.1463
Epoch 1/1... Discriminator Loss: 1.4849... Generator Loss: 0.5740 Sum Loss: 2.0589
Epoch 1/1... Discriminator Loss: 1.5051... Generator Loss: 0.6320 Sum Loss: 2.1371
Epoch 1/1... Discriminator Loss: 1.2784... Generator Loss: 0.8948 Sum Loss: 2.1732
Epoch 1/1... Discriminator Loss: 1.3162... Generator Loss: 0.8331 Sum Loss: 2.1493
Epoch 1/1... Discriminator Loss: 1.4207... Generator Loss: 0.5564 Sum Loss: 1.9772
Epoch 1/1... Discriminator Loss: 1.2537... Generator Loss: 0.8085 Sum Loss: 2.0622
Epoch 1/1... Discriminator Loss: 1.2006... Generator Loss: 0.8890 Sum Loss: 2.0895
Epoch 1/1... Discriminator Loss: 1.4484... Generator Loss: 0.5984 Sum Loss: 2.0467
Epoch 1/1... Discriminator Loss: 1.3754... Generator Loss: 0.5891 Sum Loss: 1.9645
Epoch 1/1... Discriminator Loss: 1.3893... Generator Loss: 0.6670 Sum Loss: 2.0563
Epoch 1/1... Discriminator Loss: 1.3978... Generator Loss: 0.6755 Sum Loss: 2.0733
Epoch 1/1... Discriminator Loss: 1.2871... Generator Loss: 0.7374 Sum Loss: 2.0245
Epoch 1/1... Discriminator Loss: 1.3065... Generator Loss: 0.9286 Sum Loss: 2.2350
Epoch 1/1... Discriminator Loss: 1.2040... Generator Loss: 1.0652 Sum Loss: 2.2692
Epoch 1/1... Discriminator Loss: 1.1779... Generator Loss: 0.9202 Sum Loss: 2.0981
Epoch 1/1... Discriminator Loss: 1.3517... Generator Loss: 0.7418 Sum Loss: 2.0935
Epoch 1/1... Discriminator Loss: 1.1024... Generator Loss: 1.1020 Sum Loss: 2.2044
Epoch 1/1... Discriminator Loss: 1.2174... Generator Loss: 0.7247 Sum Loss: 1.9421
Epoch 1/1... Discriminator Loss: 1.3001... Generator Loss: 0.6008 Sum Loss: 1.9009
Epoch 1/1... Discriminator Loss: 0.8962... Generator Loss: 1.4531 Sum Loss: 2.3493
Epoch 1/1... Discriminator Loss: 0.8714... Generator Loss: 1.2365 Sum Loss: 2.1078
Epoch 1/1... Discriminator Loss: 1.2945... Generator Loss: 0.5489 Sum Loss: 1.8434
Epoch 1/1... Discriminator Loss: 1.2909... Generator Loss: 0.6442 Sum Loss: 1.9352
Epoch 1/1... Discriminator Loss: 0.7033... Generator Loss: 1.5616 Sum Loss: 2.2648
Epoch 1/1... Discriminator Loss: 0.8316... Generator Loss: 1.4774 Sum Loss: 2.3090
Epoch 1/1... Discriminator Loss: 1.0115... Generator Loss: 1.0895 Sum Loss: 2.1010
Epoch 1/1... Discriminator Loss: 1.2351... Generator Loss: 0.7176 Sum Loss: 1.9528
Epoch 1/1... Discriminator Loss: 0.6963... Generator Loss: 1.3054 Sum Loss: 2.0017
Epoch 1/1... Discriminator Loss: 0.9083... Generator Loss: 1.2160 Sum Loss: 2.1243
Epoch 1/1... Discriminator Loss: 0.9884... Generator Loss: 1.0063 Sum Loss: 1.9947
Epoch 1/1... Discriminator Loss: 1.4476... Generator Loss: 0.6751 Sum Loss: 2.1227
Epoch 1/1... Discriminator Loss: 1.4066... Generator Loss: 0.5494 Sum Loss: 1.9560
Epoch 1/1... Discriminator Loss: 1.1163... Generator Loss: 1.0503 Sum Loss: 2.1666
Epoch 1/1... Discriminator Loss: 0.9799... Generator Loss: 1.0013 Sum Loss: 1.9812
Epoch 1/1... Discriminator Loss: 0.8178... Generator Loss: 2.0947 Sum Loss: 2.9126
Epoch 1/1... Discriminator Loss: 1.0177... Generator Loss: 1.2800 Sum Loss: 2.2977
Epoch 1/1... Discriminator Loss: 1.2693... Generator Loss: 0.7734 Sum Loss: 2.0426
Epoch 1/1... Discriminator Loss: 1.2649... Generator Loss: 0.6158 Sum Loss: 1.8807
Epoch 1/1... Discriminator Loss: 1.0161... Generator Loss: 1.0222 Sum Loss: 2.0383
Epoch 1/1... Discriminator Loss: 0.6649... Generator Loss: 1.2776 Sum Loss: 1.9425
Epoch 1/1... Discriminator Loss: 0.7253... Generator Loss: 1.1855 Sum Loss: 1.9107
Epoch 1/1... Discriminator Loss: 0.9392... Generator Loss: 0.9431 Sum Loss: 1.8823
Epoch 1/1... Discriminator Loss: 1.1720... Generator Loss: 1.0555 Sum Loss: 2.2274
Epoch 1/1... Discriminator Loss: 1.1061... Generator Loss: 1.4340 Sum Loss: 2.5401
Epoch 1/1... Discriminator Loss: 0.8131... Generator Loss: 1.2787 Sum Loss: 2.0918
Epoch 1/1... Discriminator Loss: 0.8938... Generator Loss: 1.1362 Sum Loss: 2.0300
Epoch 1/1... Discriminator Loss: 0.7566... Generator Loss: 0.9044 Sum Loss: 1.6610
Epoch 1/1... Discriminator Loss: 1.3413... Generator Loss: 0.6327 Sum Loss: 1.9740
Epoch 1/1... Discriminator Loss: 0.9722... Generator Loss: 1.1139 Sum Loss: 2.0861
Epoch 1/1... Discriminator Loss: 0.6590... Generator Loss: 1.7915 Sum Loss: 2.4505
Epoch 1/1... Discriminator Loss: 1.3990... Generator Loss: 0.5130 Sum Loss: 1.9119
Epoch 1/1... Discriminator Loss: 1.0831... Generator Loss: 0.5885 Sum Loss: 1.6716
Epoch 1/1... Discriminator Loss: 1.2585... Generator Loss: 0.6288 Sum Loss: 1.8873
Epoch 1/1... Discriminator Loss: 1.1494... Generator Loss: 0.5074 Sum Loss: 1.6568
Epoch 1/1... Discriminator Loss: 0.8866... Generator Loss: 1.4978 Sum Loss: 2.3844
Epoch 1/1... Discriminator Loss: 0.8695... Generator Loss: 3.4599 Sum Loss: 4.3294
Epoch 1/1... Discriminator Loss: 1.2892... Generator Loss: 0.4816 Sum Loss: 1.7707
Epoch 1/1... Discriminator Loss: 1.3205... Generator Loss: 1.3760 Sum Loss: 2.6965
Epoch 1/1... Discriminator Loss: 0.8231... Generator Loss: 0.8299 Sum Loss: 1.6530
Epoch 1/1... Discriminator Loss: 0.8130... Generator Loss: 1.4626 Sum Loss: 2.2756
Epoch 1/1... Discriminator Loss: 1.2962... Generator Loss: 1.4770 Sum Loss: 2.7732
Epoch 1/1... Discriminator Loss: 0.7413... Generator Loss: 1.9483 Sum Loss: 2.6896
Epoch 1/1... Discriminator Loss: 1.3120... Generator Loss: 0.4240 Sum Loss: 1.7361
Epoch 1/1... Discriminator Loss: 0.6684... Generator Loss: 1.0147 Sum Loss: 1.6831
Epoch 1/1... Discriminator Loss: 0.3058... Generator Loss: 2.3842 Sum Loss: 2.6900
Epoch 1/1... Discriminator Loss: 0.7699... Generator Loss: 0.9515 Sum Loss: 1.7214
Epoch 1/1... Discriminator Loss: 0.7947... Generator Loss: 1.2859 Sum Loss: 2.0805
Epoch 1/1... Discriminator Loss: 1.0753... Generator Loss: 1.2815 Sum Loss: 2.3568
Epoch 1/1... Discriminator Loss: 1.0337... Generator Loss: 1.0661 Sum Loss: 2.0998
Epoch 1/1... Discriminator Loss: 0.7387... Generator Loss: 1.1170 Sum Loss: 1.8556
Epoch 1/1... Discriminator Loss: 0.6993... Generator Loss: 0.9240 Sum Loss: 1.6233
Epoch 1/1... Discriminator Loss: 1.2877... Generator Loss: 0.4722 Sum Loss: 1.7600
Epoch 1/1... Discriminator Loss: 0.6543... Generator Loss: 1.0213 Sum Loss: 1.6756
Epoch 1/1... Discriminator Loss: 1.4870... Generator Loss: 1.2087 Sum Loss: 2.6957
Epoch 1/1... Discriminator Loss: 1.1935... Generator Loss: 0.9673 Sum Loss: 2.1608
Epoch 1/1... Discriminator Loss: 0.8869... Generator Loss: 1.5004 Sum Loss: 2.3873
Epoch 1/1... Discriminator Loss: 1.0387... Generator Loss: 1.6094 Sum Loss: 2.6481
Epoch 1/1... Discriminator Loss: 0.8723... Generator Loss: 1.2093 Sum Loss: 2.0816
Epoch 1/1... Discriminator Loss: 0.6317... Generator Loss: 1.2094 Sum Loss: 1.8411
Epoch 1/1... Discriminator Loss: 1.3535... Generator Loss: 1.5454 Sum Loss: 2.8989
Epoch 1/1... Discriminator Loss: 0.3780... Generator Loss: 2.3907 Sum Loss: 2.7687
Epoch 1/1... Discriminator Loss: 0.7253... Generator Loss: 0.9420 Sum Loss: 1.6672
Epoch 1/1... Discriminator Loss: 1.7028... Generator Loss: 1.3317 Sum Loss: 3.0345
Epoch 1/1... Discriminator Loss: 1.5015... Generator Loss: 0.4895 Sum Loss: 1.9910
Epoch 1/1... Discriminator Loss: 0.9844... Generator Loss: 1.6818 Sum Loss: 2.6662
Epoch 1/1... Discriminator Loss: 0.4473... Generator Loss: 1.7037 Sum Loss: 2.1510
Epoch 1/1... Discriminator Loss: 0.5291... Generator Loss: 2.0604 Sum Loss: 2.5895
Epoch 1/1... Discriminator Loss: 0.8671... Generator Loss: 1.2201 Sum Loss: 2.0872
Epoch 1/1... Discriminator Loss: 0.8066... Generator Loss: 1.1508 Sum Loss: 1.9574
Epoch 1/1... Discriminator Loss: 1.8370... Generator Loss: 0.2742 Sum Loss: 2.1112
Epoch 1/1... Discriminator Loss: 1.6786... Generator Loss: 1.4612 Sum Loss: 3.1399
Epoch 1/1... Discriminator Loss: 0.7107... Generator Loss: 1.1117 Sum Loss: 1.8224
Epoch 1/1... Discriminator Loss: 0.8566... Generator Loss: 0.7919 Sum Loss: 1.6485
Epoch 1/1... Discriminator Loss: 1.1920... Generator Loss: 0.6066 Sum Loss: 1.7986
Epoch 1/1... Discriminator Loss: 1.1677... Generator Loss: 0.5443 Sum Loss: 1.7120
Epoch 1/1... Discriminator Loss: 0.9057... Generator Loss: 1.0757 Sum Loss: 1.9814
Epoch 1/1... Discriminator Loss: 0.4682... Generator Loss: 1.5543 Sum Loss: 2.0225
Epoch 1/1... Discriminator Loss: 0.7041... Generator Loss: 1.4724 Sum Loss: 2.1764
Epoch 1/1... Discriminator Loss: 1.3322... Generator Loss: 0.9219 Sum Loss: 2.2541
Epoch 1/1... Discriminator Loss: 0.9859... Generator Loss: 0.8408 Sum Loss: 1.8267
Epoch 1/1... Discriminator Loss: 0.6326... Generator Loss: 1.4425 Sum Loss: 2.0751
Epoch 1/1... Discriminator Loss: 0.6129... Generator Loss: 2.0990 Sum Loss: 2.7120
Epoch 1/1... Discriminator Loss: 1.0927... Generator Loss: 0.6286 Sum Loss: 1.7212
Epoch 1/1... Discriminator Loss: 0.9452... Generator Loss: 0.8038 Sum Loss: 1.7489
Epoch 1/1... Discriminator Loss: 1.6261... Generator Loss: 0.3172 Sum Loss: 1.9433
Epoch 1/1... Discriminator Loss: 0.5382... Generator Loss: 1.5872 Sum Loss: 2.1254
Epoch 1/1... Discriminator Loss: 1.4032... Generator Loss: 0.3638 Sum Loss: 1.7671
Epoch 1/1... Discriminator Loss: 0.5671... Generator Loss: 1.8317 Sum Loss: 2.3987
Epoch 1/1... Discriminator Loss: 1.3448... Generator Loss: 0.4357 Sum Loss: 1.7805
Epoch 1/1... Discriminator Loss: 1.7484... Generator Loss: 0.2462 Sum Loss: 1.9945
Epoch 1/1... Discriminator Loss: 1.3474... Generator Loss: 0.5375 Sum Loss: 1.8848
Epoch 1/1... Discriminator Loss: 0.6210... Generator Loss: 2.4858 Sum Loss: 3.1068
Epoch 1/1... Discriminator Loss: 0.7535... Generator Loss: 1.7195 Sum Loss: 2.4730
Epoch 1/1... Discriminator Loss: 0.9587... Generator Loss: 1.2964 Sum Loss: 2.2552
Epoch 1/1... Discriminator Loss: 1.5134... Generator Loss: 0.7917 Sum Loss: 2.3050
Epoch 1/1... Discriminator Loss: 0.5402... Generator Loss: 1.6771 Sum Loss: 2.2172
Epoch 1/1... Discriminator Loss: 0.8153... Generator Loss: 1.2659 Sum Loss: 2.0812
Epoch 1/1... Discriminator Loss: 1.3560... Generator Loss: 1.5266 Sum Loss: 2.8827
Epoch 1/1... Discriminator Loss: 1.0592... Generator Loss: 0.8525 Sum Loss: 1.9117
Epoch 1/1... Discriminator Loss: 1.2096... Generator Loss: 0.4999 Sum Loss: 1.7095
Epoch 1/1... Discriminator Loss: 0.7434... Generator Loss: 1.3271 Sum Loss: 2.0705
Epoch 1/1... Discriminator Loss: 1.0378... Generator Loss: 0.6814 Sum Loss: 1.7193
Epoch 1/1... Discriminator Loss: 0.9735... Generator Loss: 0.9438 Sum Loss: 1.9172
Epoch 1/1... Discriminator Loss: 0.9132... Generator Loss: 2.5405 Sum Loss: 3.4537
Epoch 1/1... Discriminator Loss: 1.9494... Generator Loss: 0.3656 Sum Loss: 2.3150
Epoch 1/1... Discriminator Loss: 1.1197... Generator Loss: 0.6947 Sum Loss: 1.8144
Epoch 1/1... Discriminator Loss: 0.8891... Generator Loss: 1.2181 Sum Loss: 2.1071
Epoch 1/1... Discriminator Loss: 1.3403... Generator Loss: 1.2777 Sum Loss: 2.6179
Epoch 1/1... Discriminator Loss: 0.8640... Generator Loss: 1.0428 Sum Loss: 1.9068
Epoch 1/1... Discriminator Loss: 0.9243... Generator Loss: 1.1469 Sum Loss: 2.0712
Epoch 1/1... Discriminator Loss: 0.8616... Generator Loss: 0.8971 Sum Loss: 1.7587
Epoch 1/1... Discriminator Loss: 1.0637... Generator Loss: 0.9852 Sum Loss: 2.0489
Epoch 1/1... Discriminator Loss: 0.7379... Generator Loss: 1.2436 Sum Loss: 1.9815
Epoch 1/1... Discriminator Loss: 0.6266... Generator Loss: 1.7772 Sum Loss: 2.4038
Epoch 1/1... Discriminator Loss: 1.1604... Generator Loss: 1.2826 Sum Loss: 2.4430
Epoch 1/1... Discriminator Loss: 0.7538... Generator Loss: 1.4789 Sum Loss: 2.2327
Epoch 1/1... Discriminator Loss: 0.9892... Generator Loss: 0.9487 Sum Loss: 1.9379
Epoch 1/1... Discriminator Loss: 0.9242... Generator Loss: 1.1717 Sum Loss: 2.0958
Epoch 1/1... Discriminator Loss: 1.6223... Generator Loss: 0.4430 Sum Loss: 2.0654
Epoch 1/1... Discriminator Loss: 0.8567... Generator Loss: 0.9751 Sum Loss: 1.8317
Epoch 1/1... Discriminator Loss: 1.0243... Generator Loss: 1.0796 Sum Loss: 2.1039
Epoch 1/1... Discriminator Loss: 1.1483... Generator Loss: 0.6803 Sum Loss: 1.8286
Epoch 1/1... Discriminator Loss: 1.2792... Generator Loss: 0.8358 Sum Loss: 2.1150
Epoch 1/1... Discriminator Loss: 1.2523... Generator Loss: 0.7190 Sum Loss: 1.9713
Epoch 1/1... Discriminator Loss: 1.1933... Generator Loss: 0.9360 Sum Loss: 2.1292
Epoch 1/1... Discriminator Loss: 1.6607... Generator Loss: 0.7270 Sum Loss: 2.3877
Epoch 1/1... Discriminator Loss: 1.4700... Generator Loss: 0.7141 Sum Loss: 2.1841
Epoch 1/1... Discriminator Loss: 1.2672... Generator Loss: 0.6964 Sum Loss: 1.9636
Epoch 1/1... Discriminator Loss: 1.2519... Generator Loss: 0.7811 Sum Loss: 2.0330
Epoch 1/1... Discriminator Loss: 1.1925... Generator Loss: 1.1987 Sum Loss: 2.3913
Epoch 1/1... Discriminator Loss: 1.3407... Generator Loss: 0.6835 Sum Loss: 2.0242
Epoch 1/1... Discriminator Loss: 0.6040... Generator Loss: 1.8627 Sum Loss: 2.4667
Epoch 1/1... Discriminator Loss: 0.9770... Generator Loss: 1.2759 Sum Loss: 2.2529
Epoch 1/1... Discriminator Loss: 0.9985... Generator Loss: 0.9205 Sum Loss: 1.9190
Epoch 1/1... Discriminator Loss: 0.8702... Generator Loss: 1.2545 Sum Loss: 2.1247
Epoch 1/1... Discriminator Loss: 1.0803... Generator Loss: 0.8766 Sum Loss: 1.9570
Epoch 1/1... Discriminator Loss: 0.9279... Generator Loss: 1.1413 Sum Loss: 2.0692
Epoch 1/1... Discriminator Loss: 0.9327... Generator Loss: 0.8222 Sum Loss: 1.7549
Epoch 1/1... Discriminator Loss: 1.1594... Generator Loss: 0.6136 Sum Loss: 1.7730
Epoch 1/1... Discriminator Loss: 0.8059... Generator Loss: 1.2118 Sum Loss: 2.0177
Epoch 1/1... Discriminator Loss: 1.6872... Generator Loss: 1.1441 Sum Loss: 2.8313
Epoch 1/1... Discriminator Loss: 1.6504... Generator Loss: 0.3860 Sum Loss: 2.0364
Epoch 1/1... Discriminator Loss: 1.4165... Generator Loss: 0.7725 Sum Loss: 2.1890
Epoch 1/1... Discriminator Loss: 1.1181... Generator Loss: 1.0473 Sum Loss: 2.1654
Epoch 1/1... Discriminator Loss: 1.0739... Generator Loss: 1.1187 Sum Loss: 2.1926
Epoch 1/1... Discriminator Loss: 1.5752... Generator Loss: 0.4716 Sum Loss: 2.0468
Epoch 1/1... Discriminator Loss: 0.8536... Generator Loss: 1.2224 Sum Loss: 2.0760
Epoch 1/1... Discriminator Loss: 1.0286... Generator Loss: 1.4763 Sum Loss: 2.5049
Epoch 1/1... Discriminator Loss: 1.6163... Generator Loss: 0.6739 Sum Loss: 2.2902
Epoch 1/1... Discriminator Loss: 1.4487... Generator Loss: 0.4827 Sum Loss: 1.9314
Epoch 1/1... Discriminator Loss: 1.4543... Generator Loss: 0.5763 Sum Loss: 2.0307
Epoch 1/1... Discriminator Loss: 1.0554... Generator Loss: 1.4048 Sum Loss: 2.4602
Epoch 1/1... Discriminator Loss: 1.2044... Generator Loss: 0.6446 Sum Loss: 1.8490
Epoch 1/1... Discriminator Loss: 1.1820... Generator Loss: 0.8127 Sum Loss: 1.9947
Epoch 1/1... Discriminator Loss: 1.4602... Generator Loss: 0.4066 Sum Loss: 1.8669
Epoch 1/1... Discriminator Loss: 1.1237... Generator Loss: 0.8115 Sum Loss: 1.9352
Epoch 1/1... Discriminator Loss: 1.3774... Generator Loss: 0.7457 Sum Loss: 2.1231
Epoch 1/1... Discriminator Loss: 1.1333... Generator Loss: 0.9137 Sum Loss: 2.0469
Epoch 1/1... Discriminator Loss: 0.7670... Generator Loss: 1.5801 Sum Loss: 2.3471
Epoch 1/1... Discriminator Loss: 1.1387... Generator Loss: 0.7848 Sum Loss: 1.9236
Epoch 1/1... Discriminator Loss: 0.8677... Generator Loss: 1.0019 Sum Loss: 1.8696
Epoch 1/1... Discriminator Loss: 1.2856... Generator Loss: 0.6566 Sum Loss: 1.9422
Epoch 1/1... Discriminator Loss: 1.4244... Generator Loss: 1.5372 Sum Loss: 2.9617
Epoch 1/1... Discriminator Loss: 1.2739... Generator Loss: 0.7449 Sum Loss: 2.0188
Epoch 1/1... Discriminator Loss: 1.1775... Generator Loss: 0.8261 Sum Loss: 2.0036
Epoch 1/1... Discriminator Loss: 1.5593... Generator Loss: 0.3696 Sum Loss: 1.9289
Epoch 1/1... Discriminator Loss: 1.2702... Generator Loss: 0.7407 Sum Loss: 2.0109
Epoch 1/1... Discriminator Loss: 1.0284... Generator Loss: 1.0782 Sum Loss: 2.1066
Epoch 1/1... Discriminator Loss: 1.0584... Generator Loss: 1.0437 Sum Loss: 2.1021
Epoch 1/1... Discriminator Loss: 1.3337... Generator Loss: 0.6795 Sum Loss: 2.0131
Epoch 1/1... Discriminator Loss: 1.1036... Generator Loss: 0.7411 Sum Loss: 1.8447
Epoch 1/1... Discriminator Loss: 1.1976... Generator Loss: 0.6308 Sum Loss: 1.8284
Epoch 1/1... Discriminator Loss: 1.2164... Generator Loss: 0.7224 Sum Loss: 1.9388
Epoch 1/1... Discriminator Loss: 0.8180... Generator Loss: 1.5813 Sum Loss: 2.3993
Epoch 1/1... Discriminator Loss: 1.4706... Generator Loss: 0.7202 Sum Loss: 2.1908
Epoch 1/1... Discriminator Loss: 1.2215... Generator Loss: 0.8146 Sum Loss: 2.0361
Epoch 1/1... Discriminator Loss: 1.0732... Generator Loss: 0.9030 Sum Loss: 1.9762
Epoch 1/1... Discriminator Loss: 1.1286... Generator Loss: 0.9476 Sum Loss: 2.0762
Epoch 1/1... Discriminator Loss: 1.0142... Generator Loss: 1.1583 Sum Loss: 2.1725
Epoch 1/1... Discriminator Loss: 0.9387... Generator Loss: 0.9431 Sum Loss: 1.8818
Epoch 1/1... Discriminator Loss: 1.1159... Generator Loss: 0.8780 Sum Loss: 1.9939
Epoch 1/1... Discriminator Loss: 1.0214... Generator Loss: 1.3176 Sum Loss: 2.3390
Epoch 1/1... Discriminator Loss: 1.2432... Generator Loss: 0.9193 Sum Loss: 2.1625
Epoch 1/1... Discriminator Loss: 1.3231... Generator Loss: 0.6531 Sum Loss: 1.9762
Epoch 1/1... Discriminator Loss: 1.3193... Generator Loss: 0.5188 Sum Loss: 1.8381
Epoch 1/1... Discriminator Loss: 1.4735... Generator Loss: 0.7905 Sum Loss: 2.2640
Epoch 1/1... Discriminator Loss: 1.3143... Generator Loss: 0.7282 Sum Loss: 2.0425
Epoch 1/1... Discriminator Loss: 1.1216... Generator Loss: 0.9673 Sum Loss: 2.0888
Epoch 1/1... Discriminator Loss: 1.1675... Generator Loss: 0.5526 Sum Loss: 1.7201
Epoch 1/1... Discriminator Loss: 1.4395... Generator Loss: 0.5775 Sum Loss: 2.0170
Epoch 1/1... Discriminator Loss: 1.3515... Generator Loss: 0.6078 Sum Loss: 1.9593
Epoch 1/1... Discriminator Loss: 1.2196... Generator Loss: 1.5121 Sum Loss: 2.7317
Epoch 1/1... Discriminator Loss: 1.3566... Generator Loss: 0.7161 Sum Loss: 2.0727
Epoch 1/1... Discriminator Loss: 1.4968... Generator Loss: 0.4953 Sum Loss: 1.9921
Epoch 1/1... Discriminator Loss: 0.9074... Generator Loss: 1.0439 Sum Loss: 1.9513
Epoch 1/1... Discriminator Loss: 1.2608... Generator Loss: 0.6752 Sum Loss: 1.9361
Epoch 1/1... Discriminator Loss: 0.7588... Generator Loss: 1.5245 Sum Loss: 2.2834
Epoch 1/1... Discriminator Loss: 0.9390... Generator Loss: 1.0187 Sum Loss: 1.9577
Epoch 1/1... Discriminator Loss: 1.4354... Generator Loss: 0.8742 Sum Loss: 2.3096
Epoch 1/1... Discriminator Loss: 1.3715... Generator Loss: 0.6436 Sum Loss: 2.0151
Epoch 1/1... Discriminator Loss: 0.9815... Generator Loss: 1.0667 Sum Loss: 2.0483
Epoch 1/1... Discriminator Loss: 0.7797... Generator Loss: 1.4753 Sum Loss: 2.2551
Epoch 1/1... Discriminator Loss: 1.1866... Generator Loss: 0.6506 Sum Loss: 1.8372
Epoch 1/1... Discriminator Loss: 1.1073... Generator Loss: 0.7185 Sum Loss: 1.8258
Epoch 1/1... Discriminator Loss: 1.1364... Generator Loss: 0.8539 Sum Loss: 1.9903
Epoch 1/1... Discriminator Loss: 1.0778... Generator Loss: 1.0394 Sum Loss: 2.1173
Epoch 1/1... Discriminator Loss: 2.1796... Generator Loss: 0.4043 Sum Loss: 2.5840
Epoch 1/1... Discriminator Loss: 1.1184... Generator Loss: 0.7274 Sum Loss: 1.8458
Epoch 1/1... Discriminator Loss: 0.8661... Generator Loss: 1.3248 Sum Loss: 2.1908
Epoch 1/1... Discriminator Loss: 1.6338... Generator Loss: 0.3716 Sum Loss: 2.0054
Epoch 1/1... Discriminator Loss: 1.3664... Generator Loss: 0.8721 Sum Loss: 2.2385
Epoch 1/1... Discriminator Loss: 1.1883... Generator Loss: 1.0575 Sum Loss: 2.2458
Epoch 1/1... Discriminator Loss: 1.1326... Generator Loss: 0.6796 Sum Loss: 1.8122
Epoch 1/1... Discriminator Loss: 1.2825... Generator Loss: 0.7973 Sum Loss: 2.0797
Epoch 1/1... Discriminator Loss: 1.1105... Generator Loss: 1.0784 Sum Loss: 2.1889
Epoch 1/1... Discriminator Loss: 2.2824... Generator Loss: 0.8921 Sum Loss: 3.1745
Epoch 1/1... Discriminator Loss: 1.4109... Generator Loss: 0.5896 Sum Loss: 2.0005
Epoch 1/1... Discriminator Loss: 1.1704... Generator Loss: 0.7480 Sum Loss: 1.9184
Epoch 1/1... Discriminator Loss: 1.1492... Generator Loss: 0.9768 Sum Loss: 2.1260
Epoch 1/1... Discriminator Loss: 1.4134... Generator Loss: 0.8630 Sum Loss: 2.2764
Epoch 1/1... Discriminator Loss: 1.2008... Generator Loss: 1.0184 Sum Loss: 2.2192
Epoch 1/1... Discriminator Loss: 1.0783... Generator Loss: 1.1637 Sum Loss: 2.2421
Epoch 1/1... Discriminator Loss: 1.1501... Generator Loss: 0.8525 Sum Loss: 2.0026
Epoch 1/1... Discriminator Loss: 1.1822... Generator Loss: 0.6159 Sum Loss: 1.7982
Epoch 1/1... Discriminator Loss: 1.3148... Generator Loss: 0.9394 Sum Loss: 2.2542
Epoch 1/1... Discriminator Loss: 1.1194... Generator Loss: 1.2030 Sum Loss: 2.3224
Epoch 1/1... Discriminator Loss: 2.3740... Generator Loss: 1.4345 Sum Loss: 3.8085
Epoch 1/1... Discriminator Loss: 1.2810... Generator Loss: 0.8076 Sum Loss: 2.0885
Epoch 1/1... Discriminator Loss: 1.0650... Generator Loss: 0.7258 Sum Loss: 1.7909
Epoch 1/1... Discriminator Loss: 1.2060... Generator Loss: 0.7147 Sum Loss: 1.9207
Epoch 1/1... Discriminator Loss: 1.2346... Generator Loss: 0.7810 Sum Loss: 2.0156
Epoch 1/1... Discriminator Loss: 1.2142... Generator Loss: 0.8326 Sum Loss: 2.0468
Epoch 1/1... Discriminator Loss: 0.8242... Generator Loss: 1.2544 Sum Loss: 2.0786
Epoch 1/1... Discriminator Loss: 1.2588... Generator Loss: 1.0076 Sum Loss: 2.2664
Epoch 1/1... Discriminator Loss: 1.4133... Generator Loss: 0.6524 Sum Loss: 2.0656
Epoch 1/1... Discriminator Loss: 1.2292... Generator Loss: 0.7404 Sum Loss: 1.9696
Epoch 1/1... Discriminator Loss: 1.0634... Generator Loss: 0.9150 Sum Loss: 1.9784
Epoch 1/1... Discriminator Loss: 1.1699... Generator Loss: 0.7292 Sum Loss: 1.8992

Submitting This Project

When submitting this project, make sure to run all the cells before saving the notebook. Save the notebook file as "dlnd_face_generation.ipynb" and save it as a HTML file under "File" -> "Download as". Include the "helper.py" and "problem_unittests.py" files in your submission.